package com.example.content_provider_client.utils;

import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Build;
import android.util.Log;

import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

public class PermissionUtil {

    /**
     * 检查多个权限，返回true表示已完全启用权限，返回false表示未完全启用权限
     * @param act 当前活动页面
     * @param permissions 权限数组
     * @param requestCode 自定义权限代码，用于在请求权限弹窗回调函数中区分当前请求的是什么权限
     * @return bool 是否全部已授权
     */
    public static boolean checkPermission(Activity act, String[] permissions, int requestCode){
        // 如果安卓版本小于于6.0则不用动态请求权限，默认已获得权限
        if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) return  true;

        // 默认是已授权
        int check = PackageManager.PERMISSION_GRANTED;
        for (String permission : permissions) {
            check = ContextCompat.checkSelfPermission(act,permission);

            // 如果有一个未授权，则停止检查，弹窗提示权限验证，
            if(check == PackageManager.PERMISSION_DENIED) {
               break;
            }
        }

        // 有未授权的权限，弹窗提示权限验证，返回false
        if(check == PackageManager.PERMISSION_DENIED) {
            // 请求权限弹窗
            ActivityCompat.requestPermissions(act,permissions,requestCode);
            return false;
        }


        // 全部已授权则返回true
        return  true;
    }

    // 检查权限结果数组，返回true表示全部已授权，返回false表示至少有一个未授权
    public static boolean checkGrant(int[] grantResults) {
        if(grantResults == null) return  false;

        // 遍历权限数组，如果有一个未授权则返回false
        for (int result : grantResults) {
            if(result != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }

        // 全部已授权
        return true;
    }
}
